home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power Programmierung
/
Power-Programmierung CD 2 (Tewi)(1994).iso
/
c
/
crosscom
/
tptc
/
tptc17.inf
< prev
next >
Wrap
Text File
|
1988-08-16
|
17KB
|
324 lines
TPTC - Turbo Pascal to C translator, version 1.7, 25-Mar-88
by Samuel H. Smith.
This program will read a Turbo Pascal source file and convert it into
the corresponding C source code. It does much of the work required in
a full translation.
TPTC is Copywrited Shareware, delivered in three archives:
TPTC17.ARC - 03-26-88 - Translate Turbo Pascal to C. Exe+DOC files.
This is the main distribution archive. It contains the translator,
documentation and a few supporting files. See HISTORY.DOC for the
revision history, including changes since the manual was last updated.
See TODO.DOC for a list of changes that are planned in the near future.
TPTC17SC.ARC - 03-26-88 - Full Source Code for TPTC. SourceWare.
This is the complete source code for TPTC. This is distributed
under the SourceWare concept. See the file LICENSE.DOC for details.
TPTC17TC.ARC - 03-26-88 - A number of Test Cases for TPTC. This archive
contains a number of "test cases" used to verify the operation of TPTC.
New test cases are added as the translator development proceeds.
Contents of the archives follow
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Archive: TPTC17.ARC
Name Length Stowage SF Size now Date Time CRC
============ ======== ======== ==== ======== ========= ====== ====
ERRORS.DOC 4200 Crunched 46% 2252 26 Mar 88 14:59 E97E
HISTORY.DOC 9788 Crunched 50% 4824 26 Mar 88 13:01 FBA4
LICENSE.DOC 1992 Crunched 41% 1174 14 Feb 88 19:48 3F30
README 4062 Crunched 46% 2192 26 Mar 88 12:38 FB42
T2C.BAT 493 Crunched 22% 382 26 Mar 88 05:34 6D5F
TODO.DOC 690 Crunched 32% 469 25 Mar 88 20:24 2419
TPTC.DOC 11448 Crunched 52% 5481 25 Mar 88 18:11 FB8A
TPTC.EXE 61920 Crunched 34% 40828 26 Mar 88 19:12 701A
TPTCMAC.H 5593 Crunched 50% 2796 26 Mar 88 05:47 1AF5
TPTCSYS.PAS 4629 Crunched 50% 2309 26 Mar 88 05:47 B804
TPTCSYS.UNS 1462 Crunched 47% 772 26 Mar 88 15:14 E12A
UNINC.EXE 4896 Crunched 22% 3790 26 Mar 88 12:10 5901
>*total 12 111173 39% 67269
Archive: TPTC17SC.ARC
Name Length Stowage SF Size now Date Time CRC
============ ======== ======== ==== ======== ========= ====== ====
ATOI.INC 928 Crunched 41% 542 25 Mar 88 17:02 B530
COMPALL.BAT 50 ----- 1% 50 24 Mar 88 19:57 4EE0
COMPOLD.BAT 34 ----- 1% 34 15 Mar 88 19:02 79CB
DOALL.BAT 282 Crunched 18% 231 26 Mar 88 15:16 C15D
DOSTD.BAT 332 Crunched 28% 239 26 Mar 88 05:35 9BD1
FTOA.INC 189 Crunched 17% 156 25 Mar 88 17:02 0DC0
GETENV.INC 767 Crunched 38% 473 25 Mar 88 17:02 5516
GO.BAT 21 ----- 2% 21 08 Aug 87 20:32 28B3
HISTORY.DOC 9788 Crunched 50% 4824 26 Mar 88 13:01 FBA4
ITOA.INC 306 Crunched 34% 201 25 Mar 88 17:02 7AC3
KEYPRESS.INC 502 Crunched 49% 256 25 Mar 88 17:02 A410
LICENSE.DOC 1992 Crunched 41% 1174 14 Feb 88 19:48 3F30
LJUST.INC 219 Crunched 22% 170 25 Mar 88 17:02 0EB9
LOOK.BAT 34 ----- 1% 34 12 Mar 88 12:46 9DA4
MAKE.BAT 12 ----- 4% 12 17 Mar 88 18:04 F515
README 4062 Crunched 46% 2192 26 Mar 88 12:38 FB42
STOUPPER.INC 1043 Crunched 56% 451 25 Mar 88 17:02 D28C
T2C.BAT 493 Crunched 22% 382 26 Mar 88 05:34 6D5F
TPCDECL.INC 17316 Crunched 65% 5928 26 Mar 88 19:08 FEEC
TPCEXPR.INC 18210 Crunched 63% 6596 26 Mar 88 05:48 F25F
TPCMISC.INC 4471 Crunched 59% 1820 26 Mar 88 15:13 4075
TPCSCAN.INC 19588 Crunched 65% 6702 26 Mar 88 12:32 90E3
TPCSTMT.INC 23751 Crunched 65% 8134 25 Mar 88 20:36 2EA0
TPCSYM.INC 7348 Crunched 60% 2871 26 Mar 88 15:12 5E75
TPCUNIT.INC 12703 Crunched 60% 4964 26 Mar 88 14:44 6CB8
TPTC.PAS 17770 Crunched 56% 7657 26 Mar 88 12:23 45D9
TPTCMAC.H 5593 Crunched 50% 2796 26 Mar 88 05:47 1AF5
TPTCSYS.PAS 4629 Crunched 50% 2309 26 Mar 88 05:47 B804
UNINC.PAS 4867 Crunched 51% 2352 26 Mar 88 12:10 AF21
UPD.BAT 155 Crunched 21% 122 26 Mar 88 08:18 BA34
>*total 30 157455 59% 63693
Archive: TPTC17TC.ARC
Name Length Stowage SF Size now Date Time CRC
============ ======== ======== ==== ======== ========= ====== ====
ACKER.PAS 369 Crunched 32% 249 25 Mar 88 17:02 0D99
COMPALL.BAT 50 ----- 1% 50 24 Mar 88 19:57 4EE0
COMPOLD.BAT 34 ----- 1% 34 15 Mar 88 19:02 79CB
DIA.PAS 4743 Crunched 51% 2306 25 Mar 88 17:02 5BA6
DIAL.PAS 1465 Crunched 42% 847 25 Mar 88 17:02 8D78
DOALL.BAT 282 Crunched 18% 231 26 Mar 88 15:16 C15D
FINDCHRS.PAS 1134 Crunched 46% 603 25 Mar 88 17:02 349B
FMAP.PAS 5425 Crunched 56% 2387 25 Mar 88 17:02 FAC9
LINKLIST.PAS 1845 Crunched 54% 847 25 Mar 88 17:02 4D72
LOOK.BAT 34 ----- 1% 34 12 Mar 88 12:46 9DA4
MINICRT.PAS 7092 Crunched 60% 2768 25 Mar 88 17:02 9229
MTPLUS.PAS 1358 Crunched 39% 826 25 Mar 88 17:02 BC1E
POINT4.PAS 561 Crunched 41% 326 25 Mar 88 17:02 DE9D
POINTERS.PAS 478 Crunched 32% 321 25 Mar 88 17:02 D65B
PUZZLE.PAS 4795 Crunched 60% 1875 25 Mar 88 17:02 9841
QSORT.PAS 2240 Crunched 61% 852 25 Mar 88 17:02 1ABA
README 4062 Crunched 46% 2192 26 Mar 88 12:38 FB42
SETS.PAS 2116 Crunched 53% 986 25 Mar 88 17:02 C94E
SIEVE.PAS 793 Crunched 47% 416 25 Mar 88 17:02 FCFA
SMALLREC.PAS 868 Crunched 38% 533 25 Mar 88 17:02 5A5E
SUBRANGE.PAS 1010 Crunched 41% 596 25 Mar 88 17:02 7130
TEST.PAS 4998 Crunched 50% 2457 25 Mar 88 17:02 CC17
TEST2.PAS 1641 Crunched 59% 664 25 Mar 88 17:02 2AC5
TIMEDAT4.PAS 418 Crunched 26% 307 25 Mar 88 17:02 7373
UNSQ.PAS 23602 Crunched 55% 10456 25 Mar 88 17:02 D16F
VARREC.PAS 2075 Crunched 45% 1133 25 Mar 88 17:02 8F97
>*total 26 73488 53% 34296
Revision history of TPTC
------------------------
09/09/85 v0.0 (paspp)
Initial coding by Samuel H. Smith. Never released.
12/19/86 v1.0
First distributed as TPC10 under shareware concept.
04/15/87 v1.1
Corrected handling of unary minus. Improved error messages; added
error messages to object file. Added handler for integer subrange
types. Added handling for goto statement and numeric labels. The
macro header, tpcmac.h, now contains more declarations. Distributed
as TPC11.
04/22/87 v1.2
Corrected an error that led to a crash on lines with more than 40
leading spaces. Distributed as TPC12.
05/20/87 v1.3
Added support for pascal/MT+: external procedures and variables,
special write/read indirect syntax, & and ! operators, default string
size for string declarations. Distributed as TPC13.
05/26/87 v1.4
Additional support for pascal/MT+. The translator "shifts" into a
MT+ specific mode when it recognizes the 'MODULE' statement. The '|'
operator is recognized for bitwise OR. The '\', '?' and '~' operators
are all translated into a unary not. Read(ln) and Write(ln) now
support the special case of "[]" for the I/O routine. Long integer
literals are translated from '#nnn' to 'nnnL'
06/01/87 v1.5
Added new command-line parser. Added -lower option to map identifiers
to lower case. Added -mt option to force pascal/mt+ mode. Added
partial var-parameter translation. Mem, MemW, Port and PortW are all
translated into Turbo C. Turbo-c procedure declaration syntax is now
used. Arrays may now be subscripted by enumeration types. Null else
clause now handled properly in IF and CASE statements. For .. downto
is now translated correctly. The VAL..VAL form is now translated in
case statements.
---------------
-- detect concat(concat... and replace with a sprintf variant
-- changed sprintf calls to sbld calls to preserve sources during build
-- pos(c,str) and pos(str,str) are now separately translated
-- added 'base' to symbol table; use to add base-subscript offset
in all subscript references.
-- moved typename translations to tpcmac.h header
-- fixed bug in non-translation of tshell directives
-- forward pointer declarations
-- translate inline into asm statements
-- complete forward translation
10/13/87
-- improved string and array parameter translations
-- string returns are now translated into char *
10/15/87
-- corrected error in typed constant translation where nested records
are initialized.
-- variant record declarations are translated into unions but no variant
expression translations are done.
-- changed nested procedure error messages to include procedure name.
---------------
02/13/88 v1.6
Converted to TPAS 4.0 format; released under the SourceWare concept
(see README and LICENSE.DOC).
---------------
03/10/88 v1.6a
-- corrected recent errors in #include translation and -include processing.
-- changes in status display and error message formats.
-- translation of multi-dimensional and nested array declarations.
-- translation of untyped var parameters.
-- partial translation of absolute variable declarations.
-- improved data type declaration in expressions with subscripts.
03/11/88
-- new method of expression type tracking; type botching is greatly
reduced while speeding execution.
-- rewrote include file handler to allow nested includes.
03/12/88
-- implemented proper procedure ordering for nested procedures (inmost
procedures are output first, followed by outer procedures).
-- shortened command-line options to single letters.
-- added -W option to allow specification of a RAMDISK for work files.
03/13/88
-- added translation of :(expression) parameters in write statements.
-- corrected translation of 'actual' VAR and untyped parameters.
-- improved type detection in record member references.
-- created 'uninc' postprocessor to split up output into original
include files (placed in a user specified destination directory).
-- added 't2c.bat' batch file to combine translation and include processing.
-- added code to ignore tp4.0 interface sections.
03/14/88
-- improved indentation in generated code for variant record decls (remember,
tptc is NOT a pretty printer! use CB or INDENT to get pretty indentation).
03/15/88
-- added boolean as a basic type; this allows automatic selection of &, |
and &&, || in expressions.
-- implemented translation for 'str' standard procedure.
-- partial translation of 'val' procedure.
-- better implementation of subscript base value translation.
-- better type tracking in subscripted variables.
03/16/88
-- added macros for paramcount and paramstr instead of specific translations.
-- corrected implementation of mt+ translation for write([proc],...) form.
-- added unique prefix on local #define's to prevent name clashes.
-- added specific translations for \r, \n, \b, \e character constants.
-- added translation for intr() and msdos() calls.
-- implemented constant folding in trivial cases where index bases are added.
-- added translation of @(...) operator.
03/17/88
-- corrected translation of pointers to simple types.
-- improved translation of character and numeric subrange types.
-- partial translation of set expressions.
-- corrected enumeration-type subscript range calculation.
-- added -Tnn command option to control tabstops in declarations.
-- changes in symbol table and parser for 20% faster operation.
03/18/88
-- disable '#...' translation (tshell passing) without -# option.
-- exit all nested procs in fatal error handler.
-- added symbol table entries for 'builtin' procedure translations (allows
user redefinition of 'pos', for example).
-- predefined symbol table entries are reported only if -DP option is used.
-- partial translation of 'with' statements.
03/19/88
-- slight improvement in recovery from syntax errors.
-- corrected parsing of initialized set constants.
03/21/88
-- added -B option for deBug trace while scanning source file.
-- changed numeric character literals from octal to hex.
-- added warning if pascal string length byte is used in expressions.
-- implemented translation of ^c^c (multiple control character literals).
-- eliminated recursion in scanning consecutive comments.
-- added specific translations for \a, \f, \t, \v character literals.
-- corrected translation of ^., ^[, and #$hex character literals.
-- added ".pas" default on include filenames.
-- corrected translation of "external 'file.ext'..." procedure option.
03/22/88
-- corrected parsing error that could cause lockup at end of translation.
-- added translation from chr(lit) to character literals where possible.
-- allowed redefinition of 'exit' procedure.
-- corrected empty case statement and empty then-before-else translation.
-- corrected &* possibility in fscanv.
-- improved output format in inline translation.
-- added -BP option for deBug trace of statement Parsing.
-- implemented proper local symbol tables in nested functions.
03/23/88
-- corrected translation of :(expr) in write when expr starts with a digit.
-- added runtime check for too many procedure parameters.
-- better handling of nested with statements.
-- partial translation of with dependant expressions.
-- changed constant declarations from #define to 'const' to allow full
scoping rules. (this doesn't work with tc1.0!)
03/24/88
-- partial translation of expressions accessing variant record members.
-- better handling of forward redeclarations that are incomplete.
-- implemented translation of TP4 units
-- 'interface' section creates .UNS file with TPTC symbol table
information saved for later use.
-- 'interface' section creates .UNH header file for inclusion
in C sources using the unit
-- 'uses' section generates include of .UNH header and loads
the .UNS data into the current symbol table
you must translate SYSTEM.DOC, DOS.DOC, etc, before units USING these
can be translated.
-- implemented translations for $DEFINE, $IFDEF, $IFNDEF, $ELSE and $ENDIF.
-- moved standard symbol table entries to the special unit TPTCSYS.PAS,
which is implicitly "used" in each translation. TPTCSYS.UNS must be
in the default directory when TPTC is called. this eliminates the need
for special translations for val, intr, msdos and many other standard
procedures with VAR parameters.
-- implemented translation of 'inline' procedures (tp4).
---------------
03/25/88 v1.7
-- repackaged into three archives: tptc17 (main file; translator, docs and
supporting files), tptc17sc (source code), tptc17tc (test cases).
-- cosmetic changes in code generation for interface sections.
-- implemented 'as new_name' clause for specification of a different
procedure/function name in the translated code (see tptcsys.pas).
-- inline procedures in an interface section generate a warning since
they cannot be translated in this context.
-- added -Sdir option to specify a search directory for .UNS symbol files
that are not in the default directory.
-- default command-line options can be specified through the TPTC
environment variable from dos.
03/26/88
-- changes in $i parsing (fixed case where '$i fxxx' parsed as '$ifdef xxx')
-- changed untyped constants back to #defines despite the scoping problems
(sure wish borland had fully implemented 'const' declarations).
-- corrected translation of 'type mine = ^simple' where simple is already
defined (tptc was doing a forward-type translation sometimes).